단어-문서 행렬
단어-문서 행렬
개요
단어-문서 행렬(Term-Document Matrix, TDM)은 자연어 처리(Natural Language Processing, NLP)와 정보 검색(Information Retrieval) 분야에서 텍스트 데이터를 수치화하여 분석하기 위한 기본적인 데이터 구조 중 하나입니다. 이 행렬은 여러 문서의 집합에서 각 단어가 각 문서에 얼마나 자주 등장하는지를 행렬 형태로 표현함으로써, 문서 간 유사도 계산, 주제 모델링, 텍스트 분류 등 다양한 데이터 과학적 작업에 활용됩니다.
단어-문서 행렬은 행(row)이 각 단어를, 열(column)이 각 문서를 나타내며, 각 셀에는 해당 단어가 해당 문서에 나타난 빈도(또는 가중치)가 기록됩니다. 이 구조는 텍스트를 머신러닝 모델이 처리할 수 있는 수치 형태로 변환하는 데 핵심적인 역할을 합니다.
구조와 구성
기본 형태
단어-문서 행렬의 기본 형태는 다음과 같습니다:
단어 \ 문서 | 문서 1 | 문서 2 | 문서 3 |
---|---|---|---|
자연어 | 3 | 0 | 1 |
처리 | 2 | 1 | 0 |
데이터 | 1 | 4 | 5 |
과학 | 0 | 2 | 3 |
- 행(rows): 각 행은 어휘 집합(Vocabulary)에 포함된 고유한 단어 하나를 의미합니다.
- 열(columns): 각 열은 코퍼스(Corpus, 문서 집합)에 포함된 하나의 문서를 나타냅니다.
- 셀 값: 해당 단어가 해당 문서에 등장한 횟수(빈도) 또는 TF-IDF와 같은 가중치로 표현됩니다.
차원
- 행의 수: 어휘 집합의 크기 (즉, 고유 단어 수)
- 열의 수: 문서의 수
- 따라서 행렬의 차원은 V × D 형태를 가집니다. (V: 단어 수, D: 문서 수)
생성 과정
단어-문서 행렬을 생성하기 위해서는 다음과 같은 전처리 과정이 필요합니다.
1. 토큰화 (Tokenization)
문서를 개별 단어(토큰) 단위로 분리합니다. 예를 들어, "자연어 처리는 데이터 과학의 핵심입니다"는 ["자연어", "처리는", "데이터", "과학의", "핵심입니다"]로 분리됩니다.
참고: 형태소 분석기를 사용하면 "처리는" → "처리" + "는"처럼 더 정교한 토큰화가 가능합니다.
2. 정규화 (Normalization)
- 소문자 변환: "Data"와 "data"를 동일하게 처리
- 표제어 추출(Lemmatization) 또는 어간 추출(Stemming): "running", "ran", "runs" → "run"
- 불용어 제거(Stopword Removal): "의", "는", "이", "그리고" 등 의미가 적은 단어 제거
3. 빈도 계산
각 문서 내에서 각 단어가 등장한 횟수를 세어 행렬에 기록합니다.
4. 가중치 적용 (선택적)
단순 빈도(count) 대신 다음과 같은 가중치를 사용할 수 있습니다: - TF-IDF(Term Frequency-Inverse Document Frequency): 특정 문서에서 자주 등장하지만 전체 코퍼스에서는 드문 단어를 더 중요하게 평가 - 바이너리(Binary): 등장 여부만 0 또는 1로 표현 - 로그 스케일링: log(1 + 빈도)를 사용하여 빈도 편차를 줄임
활용 분야
1. 정보 검색
검색 엔진에서 쿼리와 문서 간 유사도를 계산할 때 사용됩니다. 예를 들어, 쿼리를 하나의 가상 문서로 간주하고, 단어-문서 행렬 내 문서들과의 코사인 유사도를 계산합니다.
2. 텍스트 군집화 (Clustering)
K-평균 군집화(K-means) 등의 알고리즘을 사용하여 유사한 문서를 그룹화할 때 입력 데이터로 활용됩니다.
3. 주제 모델링
잠재적 의미 분석(LSA, Latent Semantic Analysis)이나 잠재 디리클레 할당(LDA, Latent Dirichlet Allocation) 등의 기법에서 단어-문서 행렬은 주제 추출의 기초 자료로 사용됩니다.
4. 머신러닝 모델 학습
텍스트 분류(예: 스팸 감지, 감정 분석) 모델의 입력 피처로 사용됩니다.
장점과 한계
장점
- 텍스트를 수치화하는 직관적이고 간단한 방법
- 다양한 알고리즘과 호환 가능
- TF-IDF와 결합하면 의미 있는 가중치 부여 가능
한계
- 차원의 저주(Curse of Dimensionality): 어휘가 많을수록 매우 희소한(sparse) 행렬 생성
- 의미적 유사성 반영 불가: "자동차"와 "차량"이 유사한 의미라도 별도의 단어로 처리됨
- 순서 정보 손실: 단어의 위치나 문맥 정보가 반영되지 않음
관련 데이터 구조
- 문서-단어 행렬(Document-Term Matrix, DTM): 단어-문서 행렬의 전치(transpose) 형태로, 문서를 행, 단어를 열로 배치합니다. 통계 분석에서 더 일반적으로 사용됩니다.
- 단어-단어 행렬(Word-Word Co-occurrence Matrix): 특정 윈도우 내에서 함께 등장한 단어 간의 관계를 나타냅니다.
참고 자료 및 관련 문서
- Jurafsky, D., & Martin, J. H. (2023). Speech and Language Processing
- Manning, C. D., Raghavan, P., & Schütze, H. (2008). Introduction to Information Retrieval. Cambridge University Press.
- sklearn.feature_extraction.text.TfidfVectorizer – Python scikit-learn 라이브러리
- 자연어 처리, 텍스트 마이닝, TF-IDF, LSA, LDA
이 데이터 구조는 현대 텍스트 분석의 기초이지만, 최근에는 단어 임베딩(Word2Vec, BERT 등)과 같은 심층 학습 기반 방법이 보다 풍부한 의미 표현을 제공함에 따라 보완적 역할을 하고 있습니다.
이 문서는 AI 모델(qwen-3-235b-a22b-instruct-2507)에 의해 생성된 콘텐츠입니다.
주의사항: AI가 생성한 내용은 부정확하거나 편향된 정보를 포함할 수 있습니다. 중요한 결정을 내리기 전에 반드시 신뢰할 수 있는 출처를 통해 정보를 확인하시기 바랍니다.